#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#define BUFSIZE 32

int mycat(int fd);

extern int errno;
int main(int argc, char *argv[])
{
	if(argc < 2)
		return 1;

	int fd1 = open(argv[1], O_RDONLY);// 错误返回 -1   正确返回文件描述符
	if(fd1 == -1){
		perror("open()");// open会设置errorno
		fprintf(stderr, "open_argv【1】：%s\n", strerror(errno));
		return 1;
	}
	mycat(fd1);
	close(fd1);
	return 0;
}

int mycat(int fd)
{
	char buf[BUFSIZE] = {};
	int cnt;
	while(1){
		cnt = read(fd, buf, BUFSIZE); // 成功返回读取的字符数  EOF返回0  error返回-1
		if(cnt == 0){
			break;
		}else if(cnt == -1){
			perror("read()");
			return 1;
		}
		write(1, buf, cnt);
	}
	return 0;
}

